package com.jmb.api.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.*;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 
 * @TableName t_stability_case
 */
@TableName(value ="t_stability_case")
@Data
public class StabilityCase extends BaseEntity{


    /**
     * 稳定性用例描述
     */
    @Schema(description = "稳定性用例描述")
    @NotNull(message = "请输入用例描述")
    @NotEmpty(message = "请输入用例描述")
    @Size(max = 30, message = "请输入长度小于30的用例描述")
    @TableField(value = "description")
    private String description;

    /**
     * 0http(s)1ws(s)2dubbo
     */
    @Schema(description = "协议 0http(s) 1 ws(s) 2dubbo")
    @NotNull(message = "请选择协议")
    @TableField(value = "protocol")
    private Integer protocol;

    /**
     * 用例编号，根据协议确定
     */
    @Schema(description = "用例编号")
    @NotNull(message = "请输入用例编号")
    @TableField(value = "case_id")
    private Integer caseId;

    /**
     * 调度方式0执行总次数   1截止至指定时间
     */
    @Schema(description = "调度方式 0执行总次数 1截止至指定时间")
    @NotNull(message = "请选择执行方式")
    @TableField(value = "execute_type")
    private Integer executeType;

    /**
     * 多久执行一次，单位ms
     */
    @Schema(description = "执行间隔，单位ms")
    @Min(value = 60, message = "请重新输入执行间隔")
    @Max(value = 8640, message = "请重新输入执行间隔")
    @TableField(value = "step")
    private Integer step;

    /**
     * 执行次数，当执行方式为0时，根据此项决定运行
     */
    @Schema(description = "执行次数，当执行方式为0时，根据此项决定运行")
    @TableField(value = "execute_times")
    private Integer executeTimes;

    /**
     * 执行结束时间，当执行方式为1时，根据此项决定运行
     */
    @Schema(description = "执行结束时间，当执行方式为1时，根据此项决定运行")
    @TableField(value = "execute_end_time")
    private Date executeEndTime;

    /**
     * 请求报错是否停止0是1否
     */
    @Schema(description = "请求报错是否停止0是1否")
    @NotNull(message = "请选择出错时处理方案")
    @TableField(value = "on_error_stop")
    private Integer onErrorStop;

    /**
     * 请求失败（断言）是否停止0是1否
     */
    @Schema(description = "请求失败（断言）是否停止0是1否")
    @NotNull(message = "请选择失败时处理方案")
    @TableField(value = "on_failed_stop")
    private Integer onFailedStop;

    /**
     * 邮箱地址
     */
    @Schema(description = "邮箱地址")
    @Size(max = 255, message = "请输入长度小于255的邮件地址")
    @TableField(value = "email_address")
    private String emailAddress;

    /**
     * 日志中记录的字段，0响应头 1响应体 2响应头+响应体
     */
    @Schema(description = "日志中记录的字段 0响应头 1响应体 2响应头+响应体")
    @Max(value = 2, message = "日志记录内容参数错误")
    @Min(value = 0, message = "日志记录内容参数错误")
    @TableField(value = "log_record_content")
    private Integer logRecordContent;

    /**
     * 创建人用户编号
     */
    @Schema(description = "创建人用户编号")
    @TableField(value = "creator_id")
    private Integer creatorId;

    /**
     * 创建人帐号
     */
    @Schema(description = "创建人帐号")
    @TableField(value = "creator_name")
    private String creatorName;



    /**
     * 0dev1test2stg3prod4debug
     */
    @Schema(description = "运行环境 0dev 1test 2stg 3prod 4debug ")
    @NotNull(message = "请选择运行环境")
    @Max(value = 4, message = "运行环境参数错误")
    @Min(value = 0, message = "运行环境参数错误")
    @TableField(value = "run_env")
    private Integer runEnv;

    /**
     * 最近一次的执行时间
     */
    @Schema(description = "最近一次的执行时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "last_execute_time")
    private Date lastExecuteTime;
}